home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #160 (1992-02)(Rhein-Sieg-Soft).zip
/
Franz PD Disk #160 (1992-02)(Rhein-Sieg-Soft).adf
/
Anubis
/
Docs
/
Programmer.dok
< prev
next >
Wrap
Text File
|
1992-02-11
|
14KB
|
312 lines
-----------------------------------------------------------------------------
31.12.91 * 22:34:27 * Olli
-----------------------------------------------------------------------------
T.O.M. Software
_______ _____ __________ __ _______
/ ___ /\ /\ / ___ \ / ___ ___ \ /_/\ / _____/\
/ /__/ / // \ / /\_/ /\ / /\_/ /__/ /\ _\_\// /\____\/
/ ___ / // \/ / // / // / // ___ / // /\ /____ /\
/ /\_/ /_// /\ / // /_// / // /__/ / // /_/_\___/ / /
/_/ //______/ /\_ / //______/ //______/ //___________/ /
\_\/ \______\/ \_\/ \______\/ \______\/ \___________\/
Allgemeines Nachrichten - und Binär - Informations - System
-----------------------------------------------------------------------------
Hinweise für Programmierer von ANUBIS Tools
-----------------------------------------------------------------------------
Dieses Dokument ist für Programmierer gedacht, die eigene Programme (Utilities,
OnlineProgramme usw.) für ANUBIS schreiben möchten. Es enthält die Beschreibung
aller wichtigen Datenstrukturen und gibt Hilfestellungen und Tips bei der Pro-
grammierung.
Diese Anleitung ist ©1991/92; Oliver Graf - T.O.M. Software und ist fester
Bestandteil des ANUBIS Gesamtpaketes. Es gelten die in Anubis.dok erwähnten
Copyrightbestimmungen.
1. Einführung
¯¯¯¯¯¯¯¯¯¯¯¯¯
ANUBIS ist als offenes System geplant. Jeder Sysop, der ein wenig programmieren
kann, wird früher oder später den Wunsch haben, selber Programme, die er für
wichtig hält, zu schreiben. Bei den meisten Mailbox Programmen fängt hier das
Problem an : Man muß stundenlang rumprobieren, bis man die Datenstrukturen
so weit analysiert hat, bis man sie nutzen kann.
Um diese Arbeit zu sparen, werden hier die wichtigsten Datenstrukturen öffent-
lich zugänglich gemacht. Auf diese Weise sollte jeder in der Lage sein, sich
z.B. Konvertierungsprogramme von alten Mailboxdaten zu schreiben.
Wer meint, ein nützliches Tool für Anubis geschrieben zu haben und dies der
Öffentlichkeit (d.h. anderen ANUBIS Sysop's) zur Verfügung stellen will, sollte
mit uns Kontakt aufnehmen (siehe unten).
2. Die Datenstrukturen
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Es folgt nun eine komplette Beschreibung aller externen Datenstrukturen, die
zur Zeit von ANUBIS benutzt werden. Diese sind in C abgehalten, da dies nun
mal unsere 'Muttersprache' ist.
2.1. Die Userstruktur
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Auf der nachfolgenden Struktur baut die Datei "Daten/Userliste" auf.
Die Userliste ist alphabetisch nach dem Usernamen sortiert.
typedef struct
{
char username[15]; /* Name des Users in der Box */
char passwort[15]; /* Passwort (in codierter Form)*/
int userlevel; /* Userlevel [0..42] */
char name[30]; /* wirklicher Name */
char strasse[40]; /* Anschrift */
char ort[30];
char telnr[15]; /* Telerings */
char rechner[15]; /* Rechnertyp, Ataris nicht erlaubt :-) */
int umlaute; /* für den Umlautwandler */
int status; /* 0 - Gast, 1 - User, 2 - ... */
int ansi; /* Terminalemulation */
BOOL adresssperre; /* Adresse ausgeben */
char vertreter[15]; /* Username des Vertreters */
ULONG lastcall; /* Datum/Zeit letzter Anruf, Aztec Format */
ULONG gruppe; /* Gruppenzugehörigkeit (ggf) */
int updown; /* Up-/Downloadverhältnis */
int protokoll; /* gewähltes Protokoll */
long downloadfrei; /* Downloadfreiraum in Bytes oder -1 */
BOOL bell; /* Glocke ein/aus */
int editor; /* Editor Typ (0 = ZeilenEd, 1 = FullScrEd) */
char ansage[60]; /* Ansage Text */
UBYTE Zeilenzahl; /* Zeilenlaenge für FullScreenED */
UBYTE CSI; /* 0 = gesperrt, 1 = CSI, 2 = VT-100 */
char pad[38]; /* zur Erweiterung */
/* ab hier Statistikinformationen */
int anrufe; /* Anzahl der Anrufe im System */
char gebdate[12]; /* Geburtsdatum des Users */
ULONG txt_upload; /* Bytes geschriebener Texte */
ULONG txt_download; /* Bytes gelesener Texte */
ULONG bin_upload; /* Bytes Uploads */
ULONG bin_download; /* Bytes Downloads */
} IUser;
#define USR_GAST 0
#define USR_USER 1
#define USR_COSYSOP 2
#define USR_SYSOP 3
#define UML_AMIGA 0 /* Umlaut Typ Amiga */
#define UML_IBM 1
#define UML_SIMULATION 2
Erklärung der einzelnen Einträge :
username : der Username des Users, Eingabe bei ANTRAG. Der Username
darf kein's der Zeichen "/:#*$?" und kein Space ' ' ent-
halten.
passwort : Paßwort des Users, codiert, Eingabe bei ANTRAG oder PASSWORD
(Anubis private)
userlevel : Level des Users, Eingabe durch UserEd oder nach Antrag
name : Der Name des Users im Real Life, Eingabe bei ANTRAG oder
ANSCHRIFT
strasse : die Anschrift...
ort : Wohnort...
telnr : Telefonnummer des Users
rechner : Der Rechnertyp des Users
umlaute : Art der Umlaute, Einstellung durch SETUP, Werte siehe #defines
status : Der Userstatus des Users, Werte siehe #defines
(Anubis private)
ansi : eingestellte Terminalemulation, zur Zeit nur 0 = aus, 1 = ein
geplant : 1 = monochrom, 2 = Farbe, Einstellung durch SETUP
adresssperre : 0 = Adresse ist freigegeben, 1 = Adresse für andere User gesperrt
vertreter : Vertreter für persönliche Mails, Einstellung über VERTRETER
gruppe : Gruppenbitdefinition, Werte von System zu System unterschiedlich
updown : Verhältnis Upload zu Download. Bei Uploads ist
downloadfrei = updown * übertragene Bytes
protokoll : eingestelltes Übertragungsprotokoll, von System zu System unter-
schiedliche Definition
downloadfrei : Anzahl der Bytes an Downloadfreiraum für den User. -1 = unbegrenzt
bell : Glocke ein/aus
editor : 0 = ZeilenEd, 1 = FullScreenEd
ansage : Ansagetext, der beim Empfangen einer PM ausgegeben wird, Eingabe
über ANSAGE
Zeilenzahl : Anzahl der Zeilen für den FullScreenEd (Anubis private)
CSI : FullScreenEd Typ, 0 = gesperrt, 1 = CSI Codes, 2 = VT100 Codes
(Anubis private)
pad : eine Anzahl von freien Bytes, die für spätere Erweiterungen ge-
dacht sind.
Ab hier folgen reine Statistikinformationen, die ausgewertet werden können,
aber nicht geändert werden sollten.
anrufe : Anzahl der Anrufe hier im System, wird bei jedem Logoff hoch-
gezählt
gebdate : Geburtsdatum des Users, zur Zeit unbenutzt
txt_upload : Länge der geschriebenen Texte, in Bytes */
txt_download : Länge der gelesenen Texte, in Bytes */
bin_upload : Länge der Binäruploads, in Bytes */
bin_download : Länge der Binärdownloads, in Bytes */
Zu beachten ist, daß alle Felder, hinter denen "Anubis private" steht, nicht
geändert werden dürfen, da es sonst zu großen Problemen kommen kann.
2.2. Die Brettstruktur
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Mit der nachfolgenden Struktur wird die Datei "Daten/Brettliste" im RAM ver-
waltet.
Die Brettliste ist immer alphabetisch sortiert, allerdings stehen Unter-
bretter direkt hinter ihrem Brettverzeichnis. Die Sortierung wäre also
nach <brettpfad>/<name>.
typedef struct
{
char name[20]; /* Name des Brettes */
char brettpfad[60]; /* Brettpfadangabe in der Box */
char diskpfad[40]; /* Directory Pfad */
char passwort[15]; /* Passwort (optional) */
char verwalter[15]; /* Username des Brettverwalters */
int leselevel; /* mind. Level zum Lesen */
int schreiblevel; /* mind. Level zum Schreiben */
int maxmsg; /* für den Cruncher */
int typ; /* 0 - Ascii Brett, 1 - Binär */
ULONG date; /* Datum des letzten Schreibzugriffs */
ULONG gruppe; /* Kennzeichnung der Gruppen */
char infoline[60]; /* Infotext zu dem Brett */
ULONG nettyp; /* Netzzugehörigkeit des Brettes */
char pad[20]; /* zur Erweiterung */
} IBrett;
#define BTYPE_ASCII 0
#define BTYPE_BIN 1
#define BTYPE_NET 2
#define BTYPE_BDIR 3
Erklärung der einzelnen Einträge :
name : Der Name des Brettes. Bis auf einige Ausnahmen sind alle Zeichen
erlaubt. Es darf zu Anfang keines der Zeichen "+-<>/.#$" stehen,
da diese vom Programm anderweitig benötigt werden.
brettpfad : Dies ist der komplette Pfad, den das Brett im System hat. Dabei
steht hier nur der Pfad (also "Z-NETZ/RECHNER/AMIGA") in Großbuch-
staben. Der Name wird hier nicht wiederholt. Auch der im Z-Netz
häufig gebrauchte Slash '/' als erstes Zeichen taucht hier nicht
auf.
diskpfad : Der Pfad des Brettes auf der Disk/Platte. Darf nicht mit einem
Slash '/' abschließen.
passwort : Ein Paßwort, mit dem das Brett versehen werden kann. Jeder User,
der das Brett anwählt, ist gezwungen, dies einzugeben (Ausnahme :
Sysop). Dieses Paßwort ist uncodiert.
verwalter : Der Name eines Users, der der Verwalter dieses Brettes ist, in
Großbuchstaben. Hier dürfen nur User eingetragen werden, die
auch wirklich im System vorhanden sind.
leselevel : mind. Userlevel, den man zur Anwahl des Brettes braucht.
schreiblevel : mind. Userlevel, den man zum Schreiben ins Brett braucht.
maxmsg : Anzahl der Nachrichten, auf die beim Befehl CRUNCH LIMIT her-
untergelöscht werden soll.
typ : Brettkennzeichnung, zur Zeit sind Ascii-, Binär- und Netzbretter
und Brettverzeichnisse möglich (Werte siehe BTYPE_ Konstanten).
date : Datum des letzten Schreibzugriffs auf das Brett. Dies ist
eine 4 Byte ULONG Variable, die mit einem Wert im Format des
Aztec 5.0d gefüllt ist. Dabei könnte es Probleme mit anderen
Compilern geben (z.B. DICE).
gruppen : Hier werden alle Gruppen definiert, die global Zugriff auf
das Brett haben dürfen (siehe ANUBIS Hauptdoku).
infoline : Ein String, der bei der Anwahl des Brettes ausgegeben wird (z.B.
eine kurze Beschreibung).
nettyp : dieser Wert gibt bei Netz-Brettern an, zu welchem Netz das Brett
gehört (z.Zt. noch nicht benutzt, sollte deshalb 0 sein).
pad : eine Anzahl von freien Bytes, die für spätere Erweiterungen ge-
dacht sind.
2.3. Die Indexstruktur
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Mit der nachfolgenden Struktur werden alle Indexeinträge in den Brettern und
auch in der PM verwaltet.
typedef struct
{
char absender[30]; /* Name des Absenders (+ evtl. Node) */
char betreff[20]; /* Betreff oder Filename */
char kurzbetreff[40]; /* Beschreibung für File oder Empfänger */
ULONG size; /* Größe in Bytes */
ULONG date; /* Erstellungszeit */
int typ; /* Art der Nachricht */
int nr; /* Nummer der Nachricht */
int mode; /* Moduszahl */
int count; /* Anzahl der Zugriffe auf das File */
ULONG special; /* spezielle Aktions Bits */
char pad[20]; /* zur Erweiterung */
} IIndex;
#define ITYPE_ASC 0
#define ITYPE_BIN 1
#define IMODE_READ 0
#define IMODE_PROT 1
#define IMODE_DEL 2
Erklärung der einzelnen Einträge :
absender : Hier steht der Name des Users, der die Nachricht versandt hat.
Bei Netznachrichten steht hier evtl. noch der Netznode drin.
betreff : Überschrift über die folgende Nachricht. Bei Reply auf eine
schon bestehende Nachricht steht ein "re:" davor. Bei Binär-
files wird dieser Name als FileName verwendet.
kurzbetreff : Bei Binärfiles wird hier eine Kurzbeschreibung für das File
eingegeben. Wichtig : In der PM wird dieses Feld für den
Namen des Empfängers benutzt !!!
size : Die Größe der Nachricht in Bytes.
date : Das Absendedatum der Nachricht. Dies ist, wie auch bei der
Brettstruktur, eine 4 Byte ULONG Variable, die vom Aztec
geliefert wird. Diese ist nicht zu anderen Compilern kompa-
tibel und kann sich im Format ändern (Umstellung auf DICE).
typ : Kennzeichnung der Nachricht als ASCII oder Binär, siehe Konst.
nr : Die laufende Nummer der Nachricht im Brett. Aus dieser Nummer
resultiert auch der Filename. Der typische Name einer Nach-
richt ist <brettdiskpfad>/<nr>.
mode : gibt an, wie die Nachricht zu behandeln ist. Siehe dazu die
Konstanten. Wichtig : Nachrichten mit Modus IMODE_DEL sind
zwar im Index noch vorhanden, aber nicht mehr als File auf
dem Datenträger !!!
count : Anzahl der Lesezugriffe auf die Nachrichten (ANUBIS private).
Sollte nur lesend benutzt werden.
special : Ein Feld für spezielle Aktionsbits (noch nicht unterstützt,
sollte 0 sein).
pad : eine Anzahl von Bytes für spätere Erweiterungen.
2.4 Die Übergabe-Datei für Onlineprogramme
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Die Parameter Datei wird vom ANUBIS Hauptprogramm beim Aufruf eines Online-
Programms über EXECUTE unter ram:UserParam geschrieben. Dort stehen einige
Sachen, die für Online-Programmierer vielleicht wichtig sein können.
Aufbau der Datei
2400 - dies ist die Baudzahl, die der User fährt
OLIVER - der Username
9 - der Userlevel (0 - Gast, 9 - Sysop)
1 - Anzahl der Minuten Online
2000 - maximale Onlinezeit in Minuten
1 - 0 Modem-Login, 1 Console-Login
0 - 0 ANSI aus, 1 ANSI ein
Alle Onlineprogramme, die diese Datei verarbeiten können, können im Zu-
sammenhang mit ANUBIS benutzt werden.
2.5 Programmkonverter
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Für Sysops, die von anderen Programmen umsteigen möchten, wird es sicher
darangelegen sein, ihre Daten auf das ANUBIS Format zu konvertieren. Mit
Hilfe dieser Anleitung und dem Hilfsprogramm PWConv dürfte dies kein
Problem sein. Ein Konverter für AmNet II Daten kann ist bei uns vorhanden.
Sollte jemand einen Konverter für andere Programme geschrieben haben, kann
er sie der Öffentlichkeit über uns zugänglich machen.